//
//  SSTabBar.swift
//  SSSina
//
//  Created by ss on 2017/6/29.
//  Copyright © 2017年 ss. All rights reserved.
//

import UIKit

//用代理的方法:
// 01.声明协议 需要继承NSObjectProtocol
protocol SSTabBarDelegate:NSObjectProtocol{
    
    //02.声明协议方法
    func composeButtonSelect()
}

class SSTabBar: UITabBar {
    
    //闭包方式:
    //001声明闭包 无参,无返回值的闭包,只是监听调用方法
    var closure:(()->())?
    
    //03.声明代理
 weak var ssDelegate:SSTabBarDelegate?
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupUI()
    }
    
    //手写代码必须要实现的方法
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    //因为在swift中 如果把方法进行了private 私有,在swift的运行循环时根本找不到私有化的方法,
    //OC是运行时使用KVC动态派发的方式调用方法 @objc意思是使用OC的机制来完成方法调用
    @objc private func composeBtnClick(){
        //003 执行闭包
//        closure?()
//        //04,执行调用代理方法
        ssDelegate?.composeButtonSelect()
        
    }
    //设置视图
    private func setupUI(){
        addSubview(composeButton)
        
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        // 重写设置UITabBarButton的宽度
        let w = frame.width * 0.2
        // 记录遍历到第几个的标识
        var index: CGFloat = 0
        // 遍历子控件UITabBarButton
        for view in subviews{
            
            // 判断是否是UITabBarButton(系统私有的)
            // NSClassFromString 通过字符串转出得到对应的class
            if view.isKind(of: NSClassFromString("UITabBarButton")!) {
                //                print(view)
                // 宽度
                view.frame.size.width = w
                // x轴
                view.frame.origin.x = w * index
                
                // index 递增
                index += 1
                
                // 如果等于2 需要再加一 给撰写按钮.留位置
                if index == 2 {
                    index += 1
                }
            }
            
        }
        // composeButton
        composeButton.center.x = frame.size.width * 0.5
        composeButton.center.y = frame.size.height * 0.5
    }

    
    //懒加载控件 加号按钮
    //撰写按钮
    private lazy var composeButton:UIButton = {
       let btn = UIButton()
       btn.addTarget(self, action: #selector(composeBtnClick), for: UIControlEvents.touchUpInside)
       //image 和背景图片
   btn.setBackgroundImage(UIImage(named:"tabbar_compose_button_highlighted"), for: UIControlState.highlighted)
       btn.setBackgroundImage(UIImage(named:"tabbar_compose_button"), for: UIControlState.normal)
        
       btn.setImage(UIImage(named:"tabbar_compose_icon_add_highlighted"), for: UIControlState.highlighted)
       btn.setImage(UIImage(named:"tabbar_compose_icon_add"), for: UIControlState.normal)
        
       btn.sizeToFit()
        return btn
        
    }()
   
}
